home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / qwik30.arc / QPAGE.INC < prev    next >
Text File  |  1991-01-09  |  2KB  |  39 lines

  1. { Qpage.inc - procedures for changing pages                 ver 3.0, 08-31-87 }
  2. { These procedures are only needed if you intend to use more than one page.   }
  3.  
  4. { QviewPage - changes the page to be displayed              ver 3.0, 08-31-87 }
  5. procedure QviewPage (Page: byte);
  6. begin
  7. Inline(                  {Assembly by Inline 08/17/87 16:54}
  8.   $8B/$46/<PAGE/         {       mov   ax,[bp+<Page]    ;Move new page number}
  9.   $38/$06/>MAXPAGE/      {       cmp   [>MaxPage],al    ;If page>MaxPage ...}
  10.   $78/$08/               {       js    Exit             ;  exit.}
  11.   $85/$C0/               {       test  ax,ax            ;If page<0 ...}
  12.   $78/$04/               {       js    Exit             ;  exit.}
  13.   $B4/$05/               {       mov   ah,$05           ;To select page}
  14.   $CD/$10                {       int   $10              ;Change view page}
  15.  );                      {Exit:}
  16. end;
  17.  
  18. { QwritePage - changes the page to be written by Q          ver 3.0, 08-31-87 }
  19. { All Q procedures only write to the page defined by this procedure.  The
  20.   default is page 0 and you should usually end your programs on page 0. }
  21. procedure QwritePage (Page: byte);
  22. begin
  23. Inline(                  {Assembly by Inline 08/17/87 16:54}
  24.   $8B/$46/<PAGE/         {       mov   ax,[bp+<Page]    ;Move new page number}
  25.   $38/$06/>MAXPAGE/      {       cmp   [>MaxPage],al    ;If page>MaxPage ...}
  26.   $78/$18/               {       js    Exit             ;  exit.}
  27.   $85/$C0/               {       test  ax,ax            ;If page<0 ...}
  28.   $78/$14/               {       js    Exit             ;  exit.}
  29.   $31/$C9/               {       xor   cx,cx            ;Set CX=0}
  30.   $8E/$C1/               {       mov   es,cx            ;Set ES=0}
  31.   $26/                   {       es:                    ;Segment override}
  32.   $F7/$26/$4C/$04/       {       mul   wo[$044C]        ;AX*(bytes/page)}
  33.   $B1/$04/               {       mov   cl,$04           ;Set counter}
  34.   $D3/$E8/               {       shr   ax,cl            ;Divide AX by 16}
  35.   $03/$06/>PAGE0SEG/     {       add   ax,[>Page0seg]   ;Add display segment}
  36.   $A3/>QSEG              {       mov   [>Qseg],ax       ;Segment for Q procs}
  37.  );                      {Exit:}
  38. end;
  39.